#include "qt.h"
#include <stdio.h>
#include "libusb.h"	
#include <qdebug>
#include <thread>
#include <chrono>
#include <mutex>
using namespace std;
qt::qt(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
	connect(ui.btn_ok, SIGNAL(clicked()), this, SLOT(BtnOkOnClick()));
	boot = nullptr;
}
//void qt::TimeOut()
//{
//	int count = 0;
//	char buf[100];		int len = 0;
//
//	for (int i = 0; i < 100; i++)
//	{
//		//g_lock.lock();
//		int r = libusb_bulk_transfer(dev_handle, 0X01, dataOut, 2048, &len, 10000);
//		//g_lock.unlock();
//		if (r >= 0)
//		{
//			count += len;
//			sprintf(buf, "send %d", count);
//			OutputDebugStringA(buf);
//			r = libusb_bulk_transfer(dev_handle, 1 | 0x80, dataRead, 4, &len, 10);
//			if (r >= 0)
//			{
//				sprintf(buf,"rcv %d\n",(int)(dataRead[0]|dataRead[1]<<8|dataRead[2]<<16|dataRead[3]<<24 ));
//				OutputDebugStringA(buf);
//			}
//		}
//		std::this_thread::sleep_for(chrono::milliseconds(5));
//	}
//	int r = libusb_bulk_transfer(dev_handle, 0X01, dataOut, 0, &len, 10000);
//	if (r >= 0)
//	{
//		count += len;
//		sprintf(buf, "send %d", count);
//		OutputDebugStringA(buf);
//		r = libusb_bulk_transfer(dev_handle, 1 | 0x80, dataRead, 4, &len, 10);
//		if (r >= 0)
//		{
//			sprintf(buf, "rcv %d\n", (int)(dataRead[0] | dataRead[1] << 8 | dataRead[2] << 16 | dataRead[3] << 24));
//			OutputDebugStringA(buf);
//		}
//	}
//}
void qt::BtnOkOnClick()
{
	if (!boot)
	{
		boot = new BootLoader();
	}
	if(boot->IsOpen())
	{
		boot->Deinit();
		ui.btn_ok->setText("open");
	}
	else
	{
		vector<string> vec = boot->USBListDevice();
		for (string ss : vec)
			ui.usb_box->addItem(ss.c_str());
		ui.btn_ok->setText("close");
		boot->StartDebugThread();
	}
}
